SMSによるログインMFA(2段階認証)を行なう際のIAMポリシー設定
小ネタです。
昨年11月にプレビュー版機能としてリリースされた『IAMユーザー向けSMS MFA』について、手元の環境でもその挙動を試してみたところ、対象ユーザーのIAMポリシー設定に関する部分で若干の情報追記・反映が必要となっていたのでその内容を備忘録として残しておこうと思います。
SMSのMFA対応に関する内容については、以下エントリをご参照ください。
- AWS Solutions Architect ブログ: IAMユーザー向けSMS MFAのプレビューがリリースされました
- 【新機能】マネージメントコンソールへのログインMFA(2段階認証)がSMSで可能に | Developers.IO
- ショートメッセージサービス - Wikipedia
また、MFAを行なう際のIAMポリシーの作成については以下の情報をベースに行いました。
(後述内容でポリシー設定を追記しています)
SMSのMFA認証を行なうユーザーに設定するIAMポリシー
当エントリで言及している内容を満たすIAMポリシーは以下となります。123456789012の部分を対応するAWSアカウントの12桁数字に置き換えてください。管理者ユーザーで、所定の(SMSのMFA認証を行なう)ユーザーに対して下記内容で作成したIAMポリシーを割り当てる形となります。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "NotAction": "iam:*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:ListUsers" ], "Resource": [ "arn:aws:iam::123456789012:user/" ] }, { "Effect": "Allow", "Action": [ "iam:ListVirtualMFADevices" ], "Resource": [ "arn:aws:iam::123456789012:mfa/" ] }, { "Effect": "Allow", "Action": [ "iam:EnableMFADevice", "iam:DeactivateMFADevice", "iam:ResyncMFADevice", "iam:ListMFADevices", "iam:RequestSmsMfaRegistration", "iam:FinalizeSmsMfaRegistration" ], "Resource": [ "arn:aws:iam::123456789012:user/${aws:username}" ] }, { "Effect": "Allow", "Action": [ "iam:CreateVirtualMFADevice" ], "Resource": [ "arn:aws:iam::123456789012:mfa/${aws:username}" ] }, { "Effect": "Allow", "Action": [ "iam:DeleteVirtualMFADevice" ], "Resource": [ "*" ] } ] }
設定末尾に記載しているiam:DeleteVirtualMFADeviceの部分に関する記述については、手順を進める→エラーの内容に従ってアクションやリソースに対して必要な権限を追加していく過程で以下の様なエラーに突き当たり(SMSのMFA認証の有効化→無効化→再有効化のタイミングで出ました)、この内容を元にすると『そんなリソース(sms-mfa)は設定出来ない』という旨のエラーが出てそもそも設定としての追加が出来ないため、この様な形で権限を与えています。
まとめ
以上、SMSのMFA認証の際に設定するIAMポリシーの作成例のご紹介でした。SMS(ショートメッセージサービス)であればスマホのみならずガラケー等でも対応している為、利用者・形態の幅がより一層広がります。その際にこちらの設定を活用し、SMSのMFA認証対応の作業に役立てて頂ければ幸いです。